package luogu;

import java.util.Objects;
import java.util.Scanner;

public class P2670 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int m = sc.nextInt();
        String[][] arr = new String[n + 2][m + 2];
        String[][] res = new String[n][m];
        for (int i = 1; i < n + 1; i++) {
            String s = sc.next();
            for (int j = 0; j < s.length(); j++) {
                arr[i][j + 1] = String.valueOf(s.charAt(j));
            }
        }
        int temp = 0;
        for (int i = 1; i < n + 1; i++) {
            for (int j = 1; j < m + 1; j++) {
                if (Objects.equals(arr[i][j], "*")){
                    res[i-1][j-1] = "*";
                    continue;
                }if (Objects.equals(arr[i][j+1], "*")){
                    temp++;
                }if (Objects.equals(arr[i][j-1], "*")){
                    temp++;
                }if (Objects.equals(arr[i-1][j], "*")){
                    temp++;
                }if (Objects.equals(arr[i+1][j], "*")){
                    temp++;
                }if (Objects.equals(arr[i-1][j-1], "*")){
                    temp++;
                }if (Objects.equals(arr[i+1][j-1], "*")){
                    temp++;
                }if (Objects.equals(arr[i-1][j+1], "*")){
                    temp++;
                }if (Objects.equals(arr[i+1][j+1], "*")){
                    temp++;
                }
                res[i-1][j-1] = String.valueOf(temp);
                temp = 0;
            }
        }
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < m; j++) {
                if (Objects.equals(res[i][j], null)){
                    res[i][j] = "0";
                }
                System.out.print(res[i][j]);
            }
            System.out.println();
        }

/*
*   上面的是题解里面的一个思路，创建一个大一整圈的数组，这样就不要考虑边缘的情况了
*
*
*   下面的是自己写的老方法，扫雷的表格装在一个刚刚好二维数组里，然后根据坐标进行判断，
*   判断四个角落和四个边缘的超范围情况，把每种情况都列出来
* */



//        Scanner sc = new Scanner(System.in);
//        int n = sc.nextInt();
//        int m = sc.nextInt();
//        String[][] arr = new String[n][m];
//        String[][] res = new String[n][m];
//        for (int i = 0; i < n; i++) {
//            String s = sc.next();
//            for (int j = 0; j < s.length(); j++) {
//                arr[i][j] = String.valueOf(s.charAt(j));
//            }
//        }
//        int temp = 0;
//        if (n >= 2 && m >= 2){
//            for (int i = 0; i < n; i++) {
//                for (int j = 0; j < m; j++) {
//                    if (Objects.equals(arr[i][j], "*")){
//                        res[i][j] = "*";
//                        continue;
//                    }
//                    if (i == 0 && j == 0){
//                        if (Objects.equals(arr[i + 1][j], "*")){
//                            temp++;
//                        }
//                        if (Objects.equals(arr[i][j + 1], "*")){
//                            temp++;
//                        }
//                        if (Objects.equals(arr[i + 1][j + 1], "*")){
//                            temp++;
//                        }
//                        res[i][j] = String.valueOf(temp);
//                        temp = 0;
//                    } else if (i == n - 1 && j == m - 1){
//                        if (Objects.equals(arr[i - 1][j], "*")){
//                            temp++;
//                        }
//                        if (Objects.equals(arr[i][j - 1], "*")){
//                            temp++;
//                        }
//                        if (Objects.equals(arr[i - 1][j - 1], "*")){
//                            temp++;
//                        }
//                        res[i][j] = String.valueOf(temp);
//                        temp = 0;
//                    } else if (i == 0 && j == m - 1) {
//                        if (Objects.equals(arr[i][j - 1], "*")){
//                            temp++;
//                        }
//                        if (Objects.equals(arr[i + 1][j - 1], "*")){
//                            temp++;
//                        }
//                        if (Objects.equals(arr[i + 1][j], "*")){
//                            temp++;
//                        }
//                        res[i][j] = String.valueOf(temp);
//                        temp = 0;
//                    } else if (i == n - 1 && j == 0) {
//                        if (Objects.equals(arr[i - 1][j], "*")){
//                            temp++;
//                        }
//                        if (Objects.equals(arr[i - 1][j + 1], "*")){
//                            temp++;
//                        }
//                        if (Objects.equals(arr[i][j + 1], "*")){
//                            temp++;
//                        }
//                        res[i][j] = String.valueOf(temp);
//                        temp = 0;
//                    } else if (i == 0) {
//                        if (Objects.equals(arr[i][j - 1], "*")) {
//                            temp++;
//                        }
//                        if (Objects.equals(arr[i][j + 1], "*")) {
//                            temp++;
//                        }
//                        if (Objects.equals(arr[i + 1][j - 1], "*")) {
//                            temp++;
//                        }
//                        if (Objects.equals(arr[i + 1][j], "*")) {
//                            temp++;
//                        }
//                        if (Objects.equals(arr[i + 1][j + 1], "*")) {
//                            temp++;
//                        }
//                        res[i][j] = String.valueOf(temp);
//                        temp = 0;
//                    }
//                    else if (j == 0){
//                        if (Objects.equals(arr[i - 1][j], "*")){
//                            temp++;
//                        }
//                        if (Objects.equals(arr[i + 1][j], "*")){
//                            temp++;
//                        }
//                        if (Objects.equals(arr[i - 1][j + 1], "*")){
//                            temp++;
//                        }
//                        if (Objects.equals(arr[i][j + 1], "*")){
//                            temp++;
//                        }
//                        if (Objects.equals(arr[i + 1][j + 1], "*")){
//                            temp++;
//                        }
//                        res[i][j] = String.valueOf(temp);
//                        temp = 0;
//                    }
//                    else if (i == n - 1){
//                        if (Objects.equals(arr[i][j - 1], "*")){
//                            temp++;
//                        }
//                        if (Objects.equals(arr[i][j + 1], "*")){
//                            temp++;
//                        }
//                        if (Objects.equals(arr[i - 1][j - 1], "*")){
//                            temp++;
//                        }
//                        if (Objects.equals(arr[i - 1][j], "*")){
//                            temp++;
//                        }
//                        if (Objects.equals(arr[i - 1][j + 1], "*")){
//                            temp++;
//                        }
//                        res[i][j] = String.valueOf(temp);
//                        temp = 0;
//                    }
//                    else if (j == m - 1){
//                        if (Objects.equals(arr[i - 1][j], "*")){
//                            temp++;
//                        }
//                        if (Objects.equals(arr[i + 1][j], "*")){
//                            temp++;
//                        }
//                        if (Objects.equals(arr[i - 1][j - 1], "*")){
//                            temp++;
//                        }
//                        if (Objects.equals(arr[i][j - 1], "*")){
//                            temp++;
//                        }
//                        if (Objects.equals(arr[i + 1][j - 1], "*")){
//                            temp++;
//                        }
//                        res[i][j] = String.valueOf(temp);
//                        temp = 0;
//                    }
//                    else{
//                        if (Objects.equals(arr[i - 1][j], "*")){
//                            temp++;
//                        }
//                        if (Objects.equals(arr[i + 1][j], "*")){
//                            temp++;
//                        }
//                        if (Objects.equals(arr[i][j - 1], "*")){
//                            temp++;
//                        }
//                        if (Objects.equals(arr[i][j + 1], "*")){
//                            temp++;
//                        }
//                        if (Objects.equals(arr[i - 1][j - 1], "*")){
//                            temp++;
//                        }
//                        if (Objects.equals(arr[i - 1][j + 1], "*")){
//                            temp++;
//                        }
//                        if (Objects.equals(arr[i + 1][j - 1], "*")){
//                            temp++;
//                        }
//                        if (Objects.equals(arr[i + 1][j + 1], "*")){
//                            temp++;
//                        }
//                        res[i][j] = String.valueOf(temp);
//                        temp = 0;
//                    }
//                }
//            }
//        }
//        if (n == 1 && m == 1){
//            if (Objects.equals(arr[0][0], "*")){
//                res[0][0] = "*";
//            }
//            else {
//                res[0][0] = "0";
//            }
//
//        }
//        else if (n == 1){
//            for (int i = 0; i < m; i++) {
//                if (Objects.equals(arr[0][i], "*")){
//                    res[0][i] = "*";
//                    continue;
//                }
//                if (i == 0){
//                    if (Objects.equals(arr[0][i + 1], "*")){
//                        res[0][i] = "1";
//                    }
//                }else if (i == m - 1) {
//                    if (Objects.equals(arr[0][i - 1], "*")){
//                        res[0][i] = "1";
//                    }
//                }
//                else{
//                    if (Objects.equals(arr[0][i - 1], "*")){
//                        temp++;
//                    }
//                    if (Objects.equals(arr[0][i + 1], "*")){
//                        temp++;
//                    }
//                    res[0][i] = String.valueOf(temp);
//                    temp = 0;
//                }
//            }
//        }
//        else if (m == 1){
//            for (int i = 0; i < n; i++) {
//                if (Objects.equals(arr[i][0], "*")){
//                    res[i][0] = "*";
//                    continue;
//                }
//                if (i == 0){
//                    if (Objects.equals(arr[i + 1][0], "*")){
//                        res[i][0] = "1";
//                    }
//                }
//                else if (i == n - 1){
//                    if (Objects.equals(arr[i - 1][0], "*")){
//                        res[i][0] = "1";
//                    }
//                }
//                else{
//                    if (Objects.equals(arr[i - 1][0], "*")){
//                        temp++;
//                    }
//                    if (Objects.equals(arr[i + 1][0], "*")){
//                        temp++;
//                    }
//                    res[i][0] = String.valueOf(temp);
//                    temp = 0;
//                }
//            }
//        }
//        for (int i = 0; i < n; i++) {
//            for (int j = 0; j < m; j++) {
//                if (Objects.equals(res[i][j], null)){
//                    res[i][j] = "0";
//                }
//                System.out.print(res[i][j]);
//            }
//            System.out.println();
//        }
    }
}
